package CONTABILIDAD_MODELO;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class CON_PLANILLA_PROVISION_EMPLE {

    private int ID;
    private String COD_CUENTA_CONTABLE_DEBE;
    private String COD_CUENTA_CONTABLE_HABER;
    private String COD_CENTRO_COSTO_DEBE;
    private String COD_CENTRO_COSTO_HABER;
    private int ID_CABECERA;
    private String GLOSA;
    private int DEPARTAMENTO;
    private int REGIONAL;
    private int SUCURSAL;
    private double MONTO;
    private int ID_CABECERA_TIPO;
    private Conexion con = null;

    public CON_PLANILLA_PROVISION_EMPLE(Conexion con) {
        this.con = con;
    }

    public CON_PLANILLA_PROVISION_EMPLE(int ID, String COD_CUENTA_CONTABLE_DEBE, String COD_CUENTA_CONTABLE_HABER, String COD_CENTRO_COSTO_DEBE, String COD_CENTRO_COSTO_HABER, int ID_CABECERA, String GLOSA, int DEPARTAMENTO, int REGIONAL, int SUCURSAL, double MONTO, int ID_CABECERA_TIPO) {
        this.ID = ID;
        this.COD_CUENTA_CONTABLE_DEBE = COD_CUENTA_CONTABLE_DEBE;
        this.COD_CUENTA_CONTABLE_HABER = COD_CUENTA_CONTABLE_HABER;
        this.COD_CENTRO_COSTO_DEBE = COD_CENTRO_COSTO_DEBE;
        this.COD_CENTRO_COSTO_HABER = COD_CENTRO_COSTO_HABER;
        this.ID_CABECERA = ID_CABECERA;
        this.GLOSA = GLOSA;
        this.DEPARTAMENTO = DEPARTAMENTO;
        this.REGIONAL = REGIONAL;
        this.SUCURSAL = SUCURSAL;
        this.MONTO = MONTO;
        this.ID_CABECERA_TIPO = ID_CABECERA_TIPO;
    }

    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.CON_PLANILLA_PROVISION_EMPLE (ID, COD_CUENTA_CONTABLE_DEBE, COD_CUENTA_CONTABLE_HABER, COD_CENTRO_COSTO_DEBE, COD_CENTRO_COSTO_HABER, ID_CABECERA, GLOSA, DEPARTAMENTO, REGIONAL, SUCURSAL, MONTO, ID_CABECERA_TIPO) VALUES (" + ID + ",'" + COD_CUENTA_CONTABLE_DEBE + "','" + COD_CUENTA_CONTABLE_HABER + "','" + COD_CENTRO_COSTO_DEBE + "','" + COD_CENTRO_COSTO_HABER + "'," + ID_CABECERA + ",'" + GLOSA + "'," + DEPARTAMENTO + "," + REGIONAL + "," + SUCURSAL + "," + MONTO + "," + ID_CABECERA_TIPO + ")";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.CON_PLANILLA_PROVISION_EMP_SEQ.currval as ID from dual";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getInt("ID");
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.CON_PLANILLA_PROVISION_EMPLE set ID = " + ID + ",COD_CUENTA_CONTABLE_DEBE = '" + COD_CUENTA_CONTABLE_DEBE + "',COD_CUENTA_CONTABLE_HABER = '" + COD_CUENTA_CONTABLE_HABER + "',COD_CENTRO_COSTO_DEBE = '" + COD_CENTRO_COSTO_DEBE + "',COD_CENTRO_COSTO_HABER = '" + COD_CENTRO_COSTO_HABER + "',ID_CABECERA = " + ID_CABECERA + ",GLOSA = '" + GLOSA + "',DEPARTAMENTO = " + DEPARTAMENTO + ",REGIONAL = " + REGIONAL + ",SUCURSAL = " + SUCURSAL + ",MONTO = " + MONTO + ",ID_CABECERA_TIPO = " + ID_CABECERA_TIPO + " where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() throws SQLException {
        String consulta = "delete from BROKER.CON_PLANILLA_PROVISION_EMPLE where ID= " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }
    public boolean eliminarxCabecera(int id_cabecera) throws SQLException {
        String consulta = "delete from BROKER.CON_PLANILLA_PROVISION_EMPLE where ID_CABECERA= " + id_cabecera;
        con.EjecutarSentencia(consulta);
        return true;
    }

    public CON_PLANILLA_PROVISION_EMPLE Buscar(int id) throws SQLException {
        String consulta = "select * from BROKER.CON_PLANILLA_PROVISION_EMPLE where ID = " + getID();
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<CON_PLANILLA_PROVISION_EMPLE> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }
    
    public List<CON_PLANILLA_PROVISION_EMPLE> BuscarxCabecera(int id_cabecera) throws SQLException {
        String consulta = "select * from BROKER.CON_PLANILLA_PROVISION_EMPLE WHERE ID_CABECERA = "+id_cabecera;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<CON_PLANILLA_PROVISION_EMPLE> lista = Cargar(rs);
        return lista;
    }

    public List<CON_PLANILLA_PROVISION_EMPLE> Todos() throws SQLException {
        String consulta = "select * from BROKER.CON_PLANILLA_PROVISION_EMPLE";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<CON_PLANILLA_PROVISION_EMPLE> lista = Cargar(rs);
        return lista;
    }

    public List<CON_PLANILLA_PROVISION_EMPLE> Cargar(ResultSet rs) throws SQLException {
        List<CON_PLANILLA_PROVISION_EMPLE> lista = new ArrayList<CON_PLANILLA_PROVISION_EMPLE>();
        while (rs.next()) {
            CON_PLANILLA_PROVISION_EMPLE objeto = new CON_PLANILLA_PROVISION_EMPLE(con);
            objeto.setID(rs.getInt("ID"));
            objeto.setCOD_CUENTA_CONTABLE_DEBE(rs.getString("COD_CUENTA_CONTABLE_DEBE"));
            objeto.setCOD_CUENTA_CONTABLE_HABER(rs.getString("COD_CUENTA_CONTABLE_HABER"));
            objeto.setCOD_CENTRO_COSTO_DEBE(rs.getString("COD_CENTRO_COSTO_DEBE"));
            objeto.setCOD_CENTRO_COSTO_HABER(rs.getString("COD_CENTRO_COSTO_HABER"));
            objeto.setID_CABECERA(rs.getInt("ID_CABECERA"));
            objeto.setGLOSA(rs.getString("GLOSA"));
            objeto.setDEPARTAMENTO(rs.getInt("DEPARTAMENTO"));
            objeto.setREGIONAL(rs.getInt("REGIONAL"));
            objeto.setSUCURSAL(rs.getInt("SUCURSAL"));
            objeto.setMONTO(rs.getDouble("MONTO"));
            objeto.setID_CABECERA_TIPO(rs.getInt("ID_CABECERA_TIPO"));
            lista.add(objeto);
        }
        return lista;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getCOD_CUENTA_CONTABLE_DEBE() {
        return COD_CUENTA_CONTABLE_DEBE;
    }

    public void setCOD_CUENTA_CONTABLE_DEBE(String COD_CUENTA_CONTABLE_DEBE) {
        this.COD_CUENTA_CONTABLE_DEBE = COD_CUENTA_CONTABLE_DEBE;
    }

    public String getCOD_CUENTA_CONTABLE_HABER() {
        return COD_CUENTA_CONTABLE_HABER;
    }

    public void setCOD_CUENTA_CONTABLE_HABER(String COD_CUENTA_CONTABLE_HABER) {
        this.COD_CUENTA_CONTABLE_HABER = COD_CUENTA_CONTABLE_HABER;
    }

    public String getCOD_CENTRO_COSTO_DEBE() {
        return COD_CENTRO_COSTO_DEBE;
    }

    public void setCOD_CENTRO_COSTO_DEBE(String COD_CENTRO_COSTO_DEBE) {
        this.COD_CENTRO_COSTO_DEBE = COD_CENTRO_COSTO_DEBE;
    }

    public String getCOD_CENTRO_COSTO_HABER() {
        return COD_CENTRO_COSTO_HABER;
    }

    public void setCOD_CENTRO_COSTO_HABER(String COD_CENTRO_COSTO_HABER) {
        this.COD_CENTRO_COSTO_HABER = COD_CENTRO_COSTO_HABER;
    }

    public int getID_CABECERA() {
        return ID_CABECERA;
    }

    public void setID_CABECERA(int ID_CABECERA) {
        this.ID_CABECERA = ID_CABECERA;
    }

    public String getGLOSA() {
        return GLOSA;
    }

    public void setGLOSA(String GLOSA) {
        this.GLOSA = GLOSA;
    }

    public int getDEPARTAMENTO() {
        return DEPARTAMENTO;
    }

    public void setDEPARTAMENTO(int DEPARTAMENTO) {
        this.DEPARTAMENTO = DEPARTAMENTO;
    }

    public int getREGIONAL() {
        return REGIONAL;
    }

    public void setREGIONAL(int REGIONAL) {
        this.REGIONAL = REGIONAL;
    }

    public int getSUCURSAL() {
        return SUCURSAL;
    }

    public void setSUCURSAL(int SUCURSAL) {
        this.SUCURSAL = SUCURSAL;
    }

    public double getMONTO() {
        return MONTO;
    }

    public void setMONTO(double MONTO) {
        this.MONTO = MONTO;
    }

    public int getID_CABECERA_TIPO() {
        return ID_CABECERA_TIPO;
    }

    public void setID_CABECERA_TIPO(int ID_CABECERA_TIPO) {
        this.ID_CABECERA_TIPO = ID_CABECERA_TIPO;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }

}
